package com.liliudong.template.common.convert.sys;

import com.liliudong.template.common.dto.sys.SysMenuAddOrUpdateDTO;
import com.liliudong.template.common.dto.sys.SysMenuImportDTO;
import com.liliudong.template.common.entity.sys.SysMenu;
import com.liliudong.template.common.vo.sys.SysMenuDetailVO;
import com.liliudong.template.common.vo.sys.SysMenuPageVO;
import com.liliudong.template.common.vo.sys.SysMenuTreeVO;
import org.mapstruct.Mapper;
import org.mapstruct.factory.Mappers;

import java.util.List;

/**
 * @author ldli5
 * @classname SysMenuConvert
 * @date 2024/6/18-17:40
 */
@Mapper
public interface SysMenuConvert {

	SysMenuConvert INSTANCE = Mappers.getMapper(SysMenuConvert.class);

	/**
	 * 到系统菜单树vo
	 *
	 * @param sysMenu sys菜单
	 * @return {@link SysMenuTreeVO }
	 */
	SysMenuTreeVO entity2TreeVo(SysMenu sysMenu);

	/**
	 * 到系统菜单树volist
	 *
	 * @param sysMenuList sys菜单列表
	 * @return {@link List }<{@link SysMenuTreeVO }>
	 */
	List<SysMenuTreeVO> entity2TreeVo(List<SysMenu> sysMenuList);

	/**
	 * 到系统菜单
	 *
	 * @param sysMenuAddOrUpdateDTO 系统菜单添加或更新dto
	 * @return {@link SysMenu }
	 */
	SysMenu dto2Entity(SysMenuAddOrUpdateDTO sysMenuAddOrUpdateDTO);

	/**
	 * 到系统菜单页面vo
	 *
	 * @param sysMenu sys菜单
	 * @return {@link SysMenuPageVO }
	 */
	List<SysMenuPageVO> entity2PageVo(List<SysMenu> sysMenu);

	/**
	 * 实体2细节vo
	 *
	 * @param sysMenu sys菜单
	 * @return {@link SysMenuDetailVO }
	 */
	SysMenuDetailVO entity2DetailVo(SysMenu sysMenu);

	/**
	 * 导入dto列表2实体列表
	 *
	 * @param sysMenuImportDTOList 系统菜单导入dtolist
	 * @return {@link List }<{@link SysMenu }>
	 */
	List<SysMenu> importDtoList2EntityList(List<SysMenuImportDTO> sysMenuImportDTOList);

	/**
	 * 导入dto2实体
	 *
	 * @param sysMenuImportDTO 系统菜单导入dto
	 * @return {@link SysMenu }
	 */
	SysMenu importDto2Entity(SysMenuImportDTO sysMenuImportDTO);
}
